package main

import (
	"fmt"
)

func main(){
	//定义管道、声明管道 -->定义一个int类型的管道
	var intChan chan int
	//通过make初始化：管道可以存放3个int类型的数据
	intChan = make(chan int,3);

	fmt.Printf("%v",intChan)	//0x14000026080%，输出的是地址，说明管道是引用类型

	//向管道存放数据：
	intChan <- 10
	num := 20
	intChan <- num
	intChan <- 40
	fmt.Println(intChan)
	//注意：不能存放大于容量的数据：
	// intChan <- 80

	//在管道中读取数据
	num1 := <- intChan
	num2 := <- intChan
	num3 := <- intChan

	fmt.Println(num1)
	fmt.Println(num2)
	fmt.Println(num3)

	//注意：在没有使用协程的情况下，如果管道的数据已全部取出，那么再取就会报错
	num4 := <- intChan
	fmt.Println(num4)

	//输出管道长度：
	fmt.Printf("管道的实际长度：%v，管道的容量是：%v \n",len(intChan),cap(intChan))
}